﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using com.creditos.be.liclSolcred;
using com.creditos.be.liclUtil;
using com.creditos.be.liclVerifica;

namespace com.creditos.bl.interfaces.liclSolcred
{
    [ServiceContract(Namespace = "http://com.creditos.bl.interfaces.liclSolcred", Name = "ISolicitudBL", SessionMode = SessionMode.Allowed)]
    public interface ISolicitudBL
    {
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GuardarSolicitud")]
        double GuardarSolicitud(SolicitudBE oSolicitudBE);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "BuscarSolicitudxNumero")]
        SolicitudBE BuscarSolicitudxNumero(SolicitudBE oSolicitud);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "NumeroSolicitudesRegistradas")]
        int NumeroSolicitudesRegistradas(ClienteBE oClienteBE);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "BuscarCliente")]
        List<ClienteBE> BuscarCliente(ClienteBE oClienteBE);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "CalcularTasa")]
        Tasa CalcularTasa(SolicitudBE oSolicitud);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualizarEstadoSolicitud")]
        void ActualizarEstadoSolicitud(SolicitudBE oSolicitud);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualizarProspecto")]
        List<ProspectoBE> ActualizarProspecto(ProspectoBE oProspecto);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ListarVariables")]
        List<ParametrosBasicosBE> ListarVariables();

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualizarParametroBasico")]
        List<ParametrosBasicosBE> ActualizarParametroBasico(ParametrosBasicosBE oParametrosBasicos);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualizarParametroBasicoVariable")]
        void ActualizarParametroBasicoVariable(List<ParametrosBasicosBE> lstParametrosBasicos);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ListarResumenParametrosBasicos")]
        List<ParametrosBasicosBE> ListarResumenParametrosBasicos();


        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ListarEstrategiasCredito")]
        List<EstrategiasCreditoBE> ListarEstrategiasCredito(EstrategiasCreditoBE oEstrategia);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "CargarListaPlantillaPorTipo")]
        List<EstrategiasCreditoBE> CargarListaPlantillaPorTipo(int tipoPlantilla);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualizarEstrategia")]
        List<EstrategiasCreditoBE> ActualizarEstrategia(EstrategiasCreditoBE oEstrategia);        

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerListaPoliticaCredito")]
        List<CentralRiesgoBE> ObtenerListaPoliticaCredito(CentralRiesgoBE oCentral);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerListaTipoVerificacion")]
        List<BandejaVerificacionBE> ObtenerListaTipoVerificacion();

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerListaVerificacionPendiente")]
        List<BandejaVerificacionBE> ObtenerListaVerificacionPendiente(BandejaVerificacionBE oVerificacion);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualizarVerificacionDomicilioFisica")]
        List<BandejaVerificacionBE> ActualizarVerificacionDomicilioFisica(BandejaVerificacionBE oVerificacion);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualizarVerificacionTrabajoFisica")]
        List<BandejaVerificacionBE> ActualizarVerificacionTrabajoFisica(BandejaVerificacionBE oVerificacion);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerDatosIntegranteVerificacion")]
        List<BandejaVerificacionBE> ObtenerDatosIntegranteVerificacion(BandejaVerificacionBE oVerificacion);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerListaSolicitudesXAprobar")]
        List<ApruebaBE> ObtenerListaSolicitudesXAprobar(ApruebaBE oAprueba);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerListaResultadoReglas")]
        List<ApruebaBE> ObtenerListaResultadoReglas(ApruebaBE oAprueba);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "AprobarSolicitudCredito")]
        void AprobarSolicitudCredito(ApruebaBE oAprueba);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerEstrategia")]
        List<EstrategiasCreditoBE> ObtenerEstrategia(EstrategiasCreditoBE oEstrategia);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerParametroBasico")]
        List<ParametrosBasicosBE> ObtenerParametroBasico(ParametrosBasicosBE oParametrosBasicos);

        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObtenerParametroBasicoVariable")]
        List<ParametrosBasicosBE> ObtenerParametroBasicoVariable(ParametrosBasicosBE oParametrosBasicos);
    }
}
